package com.leo.cloud.common.utils;

import org.apache.commons.lang3.StringUtils;

/**
 * 文件名：StringUtil.java
 *
 * @create 2020-07-15 14:57
 */
public class StringUtil {
    private final static int[] SIZE_TABLE = {9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999,
            Integer.MAX_VALUE};
    /**
     * 计算一个整数的大小
     *
     * @param x
     * @return
     */
    public static int sizeOfInt(int x) {
        for (int i = 0; ; i++)
            if (x <= SIZE_TABLE[i]) {
                return i + 1;
            }
    }
    /**
     * 判断字符串的每个字符是否相等
     *
     * @param str
     * @return
     */
    public static boolean isCharEqual(String str) {
        return str.replace(str.charAt(0), ' ').trim().length() == 0;
    }
    /**
     * 确定字符串是否为数字
     *
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        for (int i = str.length(); --i >= 0; ) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }
    /**
     * 判断字符串是否为空格、空(“)”或null。
     *
     * @param str
     * @return
     */
    public static boolean equalsNull(String str) {
        int strLen;
        if (str == null || (strLen = str.length()) == 0 || str.equalsIgnoreCase("null")) {
            return true;
        }
        for (int i = 0; i < strLen; i++) {
            if ((Character.isWhitespace(str.charAt(i)) == false)) {
                return false;
            }
        }
        return true;
    }

    public static boolean startsWithIgnoreCase(final String str,final String subFix){
        if(StringUtils.isAnyBlank(str,subFix)){
            return false;
        }
        return str.toLowerCase().startsWith(subFix.toLowerCase());
    }
    public static boolean startsWith(final String str,final String subFix){
        if(StringUtils.isAnyBlank(str,subFix)){
            return false;
        }
        return str.startsWith(subFix);
    }
    public static boolean endWithIgnoreCase(final String str,final String subFix){
        if(StringUtils.isAnyBlank(str,subFix)){
            return false;
        }
        return str.toLowerCase().endsWith(subFix.toLowerCase());
    }
    public static boolean endWith(final String str,final String subFix){
        if(StringUtils.isAnyBlank(str,subFix)){
            return false;
        }
        return str.endsWith(subFix);
    }
    public static boolean containsIgnoreCase(final String str,final String subFix){
        if(StringUtils.isAnyBlank(str,subFix)){
            return false;
        }
        return str.toLowerCase().contains(subFix.toLowerCase());
    }
    public static boolean contains(final String str,final String subFix){
        if(StringUtils.isAnyBlank(str,subFix)){
            return false;
        }
        return str.contains(subFix);
    }
}
